package com.turing.post.util;

import javax.persistence.EntityManager;

/**
 * 添加、修改、删除异常处理
 * 
 * @author ZXL
 * 
 */
public final class GeneralDao {
	/**
	 * 添加异常处理
	 * 
	 * @param _em
	 *            实体管理器
	 * @param o
	 *            添加对象
	 * @throws PCPSApplicationException
	 *             异常信息
	 */
	public static void insert(EntityManager _em, Object o)
			throws PCPSApplicationException {
		try {
			_em.persist(o);
			_em.flush();
		} catch (Exception ex) {
			PCPSUtil.Log("插入异常", ex);
			throw new PCPSApplicationException(
					PCPSApplicationException.ERRCODE_CATEGORY_DATABASE,
					"INSERT："+o.toString(), "数据新增异常!", false);
		}
	}

	/**
	 * 修改异常处理
	 * 
	 * @param _em
	 *            实体管理器
	 * @param o
	 *            修改对象
	 * @throws PCPSApplicationException
	 *             异常信息
	 */
	public static void update(EntityManager _em, Object o)
			throws PCPSApplicationException {
		try {
			_em.merge(o);
			_em.flush();
		} catch (Exception ex) {
			PCPSUtil.Log("更新异常", ex);
			throw new PCPSApplicationException(
					PCPSApplicationException.ERRCODE_CATEGORY_DATABASE,
					"UPDATE："+o.toString(), "数据修改异常!", false);
		}
	}

	/**
	 * 删除异常处理
	 * 
	 * @param _em
	 *            实体管理器
	 * @param o
	 *            删除对象
	 * @throws PCPSApplicationException
	 *             异常信息
	 */
	public static void remove(EntityManager _em, Object o)
			throws PCPSApplicationException {
		try {
			_em.remove(o);
			_em.flush();
		} catch (Exception ex) {
			PCPSUtil.Log("删除异常", ex);
			throw new PCPSApplicationException(
					PCPSApplicationException.ERRCODE_CATEGORY_DATABASE,
					"REMOVE："+o.toString(), "数据删除异常!", false);
		}
	}
}
